#ifndef PARSER_H
#define PARSER_H

#include "ASTNode.h"
#include <string>
#include <vector>
#include <memory>
#include <fstream>
#include <sstream>

class Parser {
private:
    std::vector<std::string> lines;
    size_t current_line;
    
    // 辅助函数
    std::string trim(const std::string& str);
    int get_indent_level(const std::string& line);
    std::pair<std::string, std::string> parse_node_info(const std::string& line);
    
public:
    Parser();
    ~Parser() = default;
    
    // 从文件解析AST
    std::unique_ptr<ASTNode> parse_file(const std::string& filename);
    
    // 递归解析节点
    std::unique_ptr<ASTNode> parse_node(int expected_indent = 0);
    
    // 创建特定类型的节点
    std::unique_ptr<ASTNode> create_node(const std::string& node_type, const std::string& value = "");
};

#endif 